Type Constraints এবং Generic Functions
কটলিনের Type Constraints এবং Generic Functions আপনাকে টাইপ নিরাপত্তা বজায় রেখে ফাংশন এবং ক্লাস তৈরি করতে সক্ষম করে। Type Constraints ব্যবহার করে আপনি Generic Types এর উপর নিয়ন্ত্রণ পেতে পারেন, যা নিশ্চিত করে যে একটি নির্দিষ্ট টাইপের অবজেক্ট কেবল নির্দিষ্ট শর্তে ব্যবহার করা হবে। নিচে Type Constraints এবং Generic Functions নিয়ে বিস্তারিত আলোচনা করা হলো:
১. Type Constraints
Type Constraints আপনাকে টাইপ প্যারামিটারগুলির উপর শর্ত আরোপ করতে দেয়। আপনি একটি Generic ক্লাস বা ফাংশনে where ক্লজ ব্যবহার করে টাইপের উপর নিয়ন্ত্রণ আরোপ করতে পারেন।
i) Type Constraint Syntax
fun <T> functionName(param: T) where T : SomeClass
ii) উদাহরণ
Type Constraints সহ Generic Function:
open class Animal {
fun makeSound() = "Some sound"
}
class Dog : Animal() {
fun fetch() = "Fetching..."
}
fun <T> callAnimalSound(animal: T) where T : Animal {
println(animal.makeSound())
}
fun main() {
val dog = Dog()
callAnimalSound(dog) // আউটপুট: Some sound
}
ব্যাখ্যা:
- এখানে
callAnimalSoundএকটি Generic Function যাTটাইপ প্যারামিটার গ্রহণ করে।where T : Animalদিয়ে টাইপের উপর শর্ত আরোপ করা হয়েছে, যাতে কেবলAnimalবা তার সাবক্লাস ব্যবহার করা যায়।
২. Generic Functions
Generic Functions হলো এমন ফাংশন যা একটি বা একাধিক টাইপ প্যারামিটার গ্রহণ করে। এটি কোড পুনঃব্যবহারযোগ্যতা বাড়াতে এবং টাইপ নিরাপত্তা নিশ্চিত করতে সাহায্য করে।
i) Generic Function Syntax
fun <T> functionName(param: T): ReturnType {
// Function body
}
ii) উদাহরণ
একটি Generic Function:
fun <T> printList(items: List<T>) {
for (item in items) {
println(item)
}
}
fun main() {
val intList = listOf(1, 2, 3)
val stringList = listOf("Kotlin", "Java", "Python")
printList(intList) // আউটপুট: 1 2 3
printList(stringList) // আউটপুট: Kotlin Java Python
}
ব্যাখ্যা:
- এখানে
printListএকটি Generic Function যাList<T>গ্রহণ করে এবং প্রতিটি আইটেম প্রিন্ট করে। এটি যে কোন টাইপের List প্রক্রিয়া করতে সক্ষম।
৩. Multiple Type Constraints
আপনি একাধিক টাইপ কনস্ট্রেইন্টও যুক্ত করতে পারেন। এটি where ক্লজের মাধ্যমে করা হয়।
i) উদাহরণ
interface Comparable<T> {
fun compareTo(other: T): Int
}
fun <T> sortList(items: List<T>) where T : Comparable<T> {
// Sorting logic (for example purpose, just printing)
println("Sorting list of items")
}
fun main() {
// sortList(listOf(1, 2, 3)) // This would work if we had implemented sorting
}
ব্যাখ্যা:
- এখানে
sortListফাংশনে টাইপ প্যারামিটারTএর উপরComparable<T>টাইপ কনস্ট্রেইন্ট প্রয়োগ করা হয়েছে, যাতেTঅবশ্যইComparableইন্টারফেসের একটি বাস্তবায়ন হতে হবে।
৪. Generic Classes with Constraints
আপনি Generic ক্লাসেও Type Constraints ব্যবহার করতে পারেন।
i) উদাহরণ
class Box<T>(val item: T) where T : Comparable<T> {
fun isGreaterThan(other: T): Boolean {
return item > other
}
}
fun main() {
val box1 = Box(5)
val box2 = Box(3)
println(box1.isGreaterThan(box2.item)) // আউটপুট: true
}
ব্যাখ্যা:
- এখানে
Boxএকটি Generic ক্লাস যাTটাইপ প্যারামিটার গ্রহণ করে এবংwhere T : Comparable<T>কনস্ট্রেইন্ট ব্যবহার করেছে, যাতেTঅবশ্যইComparableহতে হবে।
উপসংহার
কটলিনের Type Constraints এবং Generic Functions আপনাকে টাইপ নিরাপত্তা বজায় রেখে ক্লাস এবং ফাংশন তৈরি করার ক্ষমতা প্রদান করে। Type Constraints ব্যবহার করে আপনি নির্দিষ্ট টাইপের উপর নিয়ন্ত্রণ আরোপ করতে পারেন, এবং Generic Functions কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বাড়ায়।
Read more